package com.yilin.tms.core.entity.order.goods;

import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.yilin.tms.core.commons.base.BaseDataEntity;
import com.yilin.tms.core.commons.annotation.Explain;
import com.yilin.tms.core.entity.user.OrganType;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
import javax.persistence.Transient;
import java.util.Date;
import java.util.List;


/**
 * 货源类
 * 货单 上游托运单
 *
 * @author zhangjinyuan
 * @date 2022/10/28
 */
@Entity
@Table(name = "goods_order")
@TableName(value = "goods_order")
public class GoodsOrder extends BaseDataEntity {

    /**
     * 计价模式
     */
    public enum PriceMode {
        wholePrice(0, "整单计价(一口价)"),
        unitPrice(1, "单价计价"),
        notPrice(2, "汇总计价"),
        ordinary(3, "普通模式");
        @EnumValue
        public Integer index;
        public String name;
        PriceMode(Integer index, String name) {
            this.index = index;
            this.name = name;
        }
    }

    /**
     * 限抢范围
     */
    public enum LimitRobScope {
        wholeScope(0, "全网社区"),
        cooperateScope(1, "合作用户");
        @EnumValue
        public Integer index;
        public String name;
        LimitRobScope(Integer index, String name) {
            this.index = index;
            this.name = name;
        }
    }

    /**
     * 货源状态
     */
    public enum GoodsStatus {
        save(0, "已保存","货源已保存，请根据提示完成货源上线/分配"),
        reserve(1, "预约中（预约上线）","货源预约中，预约结束自动上线"),
        release(2, "已上线","货源已上线，请随时关注司机抢单通知"),
        scrap(3, "作废（回收站）","货源已作废，您可以重新编辑发布"),
        template(4, "模板","模块已创建，使用模板快速发布货源");
        @EnumValue
        public Integer index;
        public String name;
        public String shipperTip;
        GoodsStatus(Integer index, String name, String shipperTip) {
            this.index = index;
            this.name = name;
            this.shipperTip = shipperTip;
        }
    }

    /**
     * 结算方式
     */
    public enum SettlementType {
        releasePricing(0, "发布一口价"),
        assignWav(1, "按分配量"),
        loadingWav(2, "按装车量"),
        deliverWav(3, "按发货量"),
        arriveWav(4, "按收货量"),
        gatherTotal(5, "汇总结算");

        @EnumValue
        public Integer index;
        public String name;

        SettlementType(Integer index, String name) {
            this.index = index;
            this.name = name;
        }
    }

    /**
     * 货单类型
     */
    public enum GoodsOrderType {
        ordinaryOrder(0, "干线运输（一对一）"),
        warehouseCollect(1, "仓储集采（多对一）"),
        warehouseDistribute(2, "仓储（城市）配送(一对多)");

        @EnumValue
        public Integer index;
        public String name;

        GoodsOrderType(Integer index, String name) {
            this.index = index;
            this.name = name;
        }
    }

    /**
     * 基础信息
     */
    @Explain("货单编号")//todo
    @Column(name = "goods_order_no")
    private String goodsOrderNo;
    @Explain("标题")//todo
    @Column(name = "title")
    private String title;
    @Explain("货源状态")
    @Column(name = "goods_status")
    private GoodsStatus goodsStatus;
    @Explain("货单类型")
    @Column(name = "goods_order_type")
    private GoodsOrderType goodsOrderType;//已删除
    @Explain("货物类型显示")//todo
    @Column(name = "goods_type_name")
    private String goodsTypeName; //货物类型显示（用于在列表显示，货物列表第一个）
    @Explain("补货次数")//todo
    @Column(name = "supplement_count")
    private Integer supplementCount;//补货次数 不是整车保存状态下可补货
    @Explain("货源上线次数")//todo
    @Column(name = "release_number")
    private Integer releaseNumber = 0; //一口价货源上线次数
    @Explain("货源备注")//todo
    @Column(name = "goods_remark")
    private String goodsRemark;
    @Explain("派单ID")//todo
    @Column(name = "dispatch_order_id")
    private String dispatchOrderId;//派单有效
    /**
     * 货主信息
     */
    @Explain("组织LOGO")//todo
    @Column(name = "shipper_organize_logo")
    private String shipperOrganizeLogo;
    @Explain("组织id")//todo
    @Column(name = "shipper_organize_id")
    private String shipperOrganizeId;
    @Explain("组织名称")//todo
    @Column(name = "shipper_organize_name")
    private String shipperOrganizeName;
    @Explain("货主组织类型")//todo
    @Column(name = "shipper_organize_type")
    private OrganType shipperOrganizeType;
    @Explain("组织会员名称")//todo 弃用
    @Column(name = "shipper_member_type_name")
    private String shipperMemberTypeName;
    @Explain("组织月度评分")//todo
    @Column(name = "shipper_monthly_rating")
    private Double shipperMonthlyRating;
    /**
     * 所属集团
     * */
    @Explain("上级集团ID")//todo
    @Column(name = "shipper_group_organize_id")
    private String shipperGroupOrganizeId;
    @Explain("上级集团名称")//todo
    @Column(name = "shipper_group_organize_name")
    private String shipperGroupOrganizeName;
    /**
     * 货主发布操作人
     * */
    @Explain("货主操作人用户id")//todo
    @Column(name = "shipper_account_id")
    private String shipperAccountId;
    @Explain("货主操作人用户头像")//todo
    @Column(name = "shipper_account_avatar")
    private String shipperAccountAvatar;
    @Explain("货主操作人用户用户名称")//todo
    @Column(name = "shipper_account_name")
    private String shipperAccountName;
    @Explain("货主操作人用户电话")//todo
    @Column(name = "shipper_account_phone")
    private String shipperAccountPhone;
    /**
     * 运输需求
     */
    @Explain("需求车型ID")
    @Column(name = "truck_type_ids",columnDefinition = "TEXT")
    private String truckTypeIds;//多个车型逗号隔开
    @Explain("需求车型名称")
    @Column(name = "truck_type_names",columnDefinition = "TEXT")
    private String truckTypeNames;//多个车型逗号隔开
    @Explain("运输类型id")//todo
    @Column(name = "transport_type_id")
    private String transportTypeId;
    @Explain("运输类型名称")//todo
    @Column(name = "transport_type_name")
    private String transportTypeName;
    @Explain("运输代码")//todo
    @Column(name = "transport_type_code")
    private String transportTypeCode;
    @Explain("总距离")//todo
    @Column(name = "kilometer")
    private Double kilometer;//总距离 单位：km
    @Explain("预计总时间")//todo
    @Column(name = "duration")
    private Integer duration; //预计时间 单位：秒
    @Explain("限制抢单范围")//todo
    @Column(name = "limit_rob_scope")
    private LimitRobScope limitRobScope;
    /**
     * 货物计量
     */
    @Explain("运输总量")//todo
    @Column(name = "shipper_total_measure")
    private Double shipperTotalMeasure;
    @Explain("单位")//todo
    @Column(name = "measure_unit")
    private String measureUnit;//修改：单位放在货源，统一计量单位
    @Explain("总毛重")//todo
    @Column(name = "total_gross_weight")
    private Double totalGrossWeight;
    @Explain("已装量")//todo
    @Column(name = "embark_measure")
    private Double embarkMeasure = 0D;
    /**
     * 货主货源配率和费率
     * */
    @Column(name = "release_payment_rate")//todo
    private Double releasePaymentRate  = 0D; //发布付款比例   /// 付款比例：设置付款比例
    // 后比例付款，付款前均判断
    @Column(name = "rob_payment_rate")//todo
    private Double robPaymentRate  = 0D; //抢单付款比例
    @Column(name = "deliver_payment_rate")//todo
    private Double deliverPaymentRate  = 0D; //发货付款比例
    @Column(name = "arrival_payment_rate")//todo
    private Double arrivalPaymentRate  = 0D; //货到付款比例 ///如果是自动结算 比例无效 默认尾款全付
    @Column(name = "shipper_fee_rate")//todo
    private Double shipperFeeRate= 0D; // 货主手续费率
    @Column(name = "shipper_tax_rate")//todo
    private Double shipperTaxRate= 0D;// 货主预付不含税税率
    @Column(name = "insurance_rate")//todo
    private Double insuranceRate= 0D; // 保率
    @Column(name = "indemnify_threshold")//todo
    private Double indemnifyThreshold= 0D; // 货损赔付阈值
    /**
     * 费用统计/合计
     */
    @Explain("计价模式")
    @Column(name = "price_mode")
    private PriceMode priceMode;//
    @Explain("结算方式")
    @Column(name = "settlement_type")
    private SettlementType settlementType;
    @Explain("运输费")//todo
    @Column(name = "shipper_transport_cost")
    private Double shipperTransportCost = 0D;//主费用: 司机运输费【前台显示】
    @Explain("剩余运输费")//todo
    @Column(name = "surplus_transport_cost")
    private Double surplusTransportCost = 0D;
    @Explain("服务费")//todo
    @Column(name = "shipper_service_cost")
    private Double shipperServiceCost = 0D;//1.手续费平台收取
    @Explain("不含税增收税费")//todo
    @Column(name = "shipper_tax_cost")
    private Double shipperTaxCost = 0D;//2.税费
    @Explain("附加费")//todo
    @Column(name = "shipper_additional_cost")
    private Double shipperAdditionalCost = 0D;//3.装卸费等
    @Explain("附加费详情")//todo
    @Column(name = "shipper_additional_details")
    private String shipperAdditionalDetails;
    @Explain("保单费")//todo
    @Column(name = "insured_cost")
    private Double insuredCost = 0D;//4.保单费
    @Explain("保单额度")//todo
    @Column(name = "insured_amount")
    private Double insuredAmount = 0D;
    @Explain("阶段合计费用")//todo
    @Column(name = "shipper_total_cost")
    private Double shipperTotalCost = 0D;
    @Explain("已支付费用")//todo
    @Column(name = "pay_cost")
    private Double payCost;//==阶段支付费用
    /**
     * 抢单审核后：记录已抢单成功的拆分量
     * */
    @Column(name = "embark_additional_cost")
    private Double embarkAdditionalCost = 0D; //【已抢单】附加费用总费用 例：装卸费
    @Column(name = "embark_insurance_cost")
    private Double embarkInsuranceCost = 0D; //【已抢单】保费
    @Column(name = "embark_insurance_amount")
    private Double embarkInsuranceAmount = 0D; //【已抢单】保额
    @Column(name = "embark_already_pay_cost")
    private Double embarkAlreadyPayCost = 0D; //【已抢单】上阶段已经支付【成功】的费用
    /**
     * 时间线
     */
    @Explain("发布时间")
    @Column(name = "release_time")//todo
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date releaseTime=new Date();
    @Explain("预约上线时间")
    @Column(name = "reserve_time")//todo
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date reserveTime;
    @Explain("截止时间")
    @Column(name = "end_time")//todo
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date endTime; //截止时间 自动下线 为空不限
    @Explain("计划装货时间")
    @Column(name = "loading_time")//todo
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date loadingTime;
    @Explain("作废时间")
    @Column(name = "scrap_time")//todo
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date scrapTime;
    /**
     * 显示节点地区信息 第一个节点信息
     */
    @Explain("默认显示发货地区")//todo
    @Column(name = "display_consignor_area")
    private String displayConsignorArea;
    @Explain("默认显示发货坐标")//todo
    @Column(name = "display_consignor_coordinate")
    private String displayConsignorCoordinate;
    @Explain("默认显示收货地区")//todo
    @Column(name = "display_consignee_area")
    private String displayConsigneeArea;
    @Explain("默认显示收货坐标")//todo
    @Column(name = "display_consignee_coordinate")
    private String displayConsigneeCoordinate;
    /**
     * 配置 会员设定
     */
    @Explain("是否整车")
    @Column(name = "full_load")
    private Boolean fullLoad = false;
    @Explain("撮合业务")
    @Column(name = "matching")
    private Boolean matching = false;
    @Explain("是否含税")
    @Column(name = "included_tax")
    private Boolean includedTax = false;
    @Explain("拒绝议价")
    @Column(name = "no_bargain")
    private Boolean noBargain = false;
    @Explain("自动审核")
    @Column(name = "auto_audit")
    private Boolean autoAudit = false;
    @Explain("是否开启电子围栏")
    @Column(name = "start_fence")
    private Boolean startFence = false;
    @Explain("需要装货拍照")
    @Column(name = "need_upload_shipping")
    private Boolean needUploadShipping = false;
    @Explain("自动发货")
    @Column(name = "auto_delivery")
    private Boolean autoDelivery = false;
    @Explain("需要回执拍照")
    @Column(name = "need_upload_receipt")
    private Boolean needUploadReceipt = false;
    @Explain("跳过收货确认")
    @Column(name = "skip_confirm_receipt")
    private Boolean skipConfirmReceipt = false;
    @Explain("手动清算")
    @Column(name = "hand_liquidation")
    private Boolean handLiquidation = false;//新增：默认自动清算，货主/平台决定是否需要手动清算，汇总计价货源 必须手动清算
    /**
     * 查询字段
     */
    @Explain("车主若已抢单")
    @Transient
    @TableField(exist = false)
    private String robOrderId;  //车主若已抢单 返回
    @Explain("货主已抢单且待审核数量")
    @Transient
    @TableField(exist = false)
    private int robOrderNum = 0;//该货源抢单数量
    @Explain("登录用户当前定位")
    @Transient
    @TableField(exist = false)
    private String targetPosition;  //查看人车主当前定位 用于货源列表的查询
    @Explain("车主离货源距离")
    @Transient
    @TableField(exist = false)
    private Double targetDistance; //车主离货源距离 米
    @Explain("货物节点List")
    @Transient
    @TableField(exist = false)
    private List<GoodsOrderNote> goodsOrderNoteList;//货源详情返回
    @Explain("货源详情链接")
    @Transient
    @TableField(exist = false)
    private String goodsOrderDetailUrl;//http:baseUrl:port//小镖人司机最新下载地址+?goodsOrderId=xxx
    @Explain("批量状态查询")
    @Transient
    @TableField(exist = false)
    private GoodsStatus[] queryStatuses;//前台批量状态查询
    @Explain("不能申请抢单的原因")
    @Transient
    @TableField(exist = false)
    private String notRobReason;//不能申请抢单的原因
    @Explain("匹配的车型名称")
    @Transient
    @TableField(exist = false)
    private String matchTruckTypeNames;//匹配的车型名称
    @Explain("车主组织ID")
    @Transient
    @TableField(exist = false)
    private String robOrganizeId;//车主组织ID，WMS使用
    /**
     * 查看人预存信息
     * */
    @Transient
    @TableField(exist = false)
    private String cooperateShipperIds;//合作车主IDS
    @Transient
    @TableField(exist = false)
    private String queryTruckerPlatId;//查看人车主所属网货平台
    @Transient
    @TableField(exist = false)
    private String queryTruckerZonePlatId;//查看人车主所属孵化平台
    /**
     * 前台操作标识
     */
    @Transient
    @TableField(exist = false)
    private String optTip; //操作提示
    @Transient
    @TableField(exist = false)
    private Boolean owner = false;//是否是我的货源
    @Transient
    @TableField(exist = false)
    private Boolean shipperPay = false;//货主 是否已支付
    @Transient
    @TableField(exist = false)
    private Boolean shipperCanPay = false;//货主 是否可以支付
    @Transient
    @TableField(exist = false)
    private Boolean shipperCanRelease = false; //货主 是否能上线货源
    @Transient
    @TableField(exist = false)
    private Boolean shipperCanReserve = false;//货主 是否能预约上线货源
    @Transient
    @TableField(exist = false)
    private Boolean shipperCanAssign = false; //货主 是否能分配
    @Transient
    @TableField(exist = false)
    private Boolean shipperCanOffLine = false;  //货主 是否能下线
    @Transient
    @TableField(exist = false)
    private Boolean shipperCanEdit = false; //货主 是否能编辑
    @Transient
    @TableField(exist = false)
    private Boolean shipperCanRobOrder = false;//货主 是否有可审核的抢单
    @Transient
    @TableField(exist = false)
    private Boolean shipperCanScrap = false;//货主 是否能作废
    @Transient
    @TableField(exist = false)
    private Boolean truckerCanRob = false; //车主 是否可申请抢单

    public String getDispatchOrderId() {
        return dispatchOrderId;
    }

    public void setDispatchOrderId(String dispatchOrderId) {
        this.dispatchOrderId = dispatchOrderId;
    }

    public Double getIndemnifyThreshold() {
        return indemnifyThreshold;
    }

    public void setIndemnifyThreshold(Double indemnifyThreshold) {
        this.indemnifyThreshold = indemnifyThreshold;
    }

    public Double getShipperTotalCost() {
        return shipperTotalCost;
    }

    public void setShipperTotalCost(Double shipperTotalCost) {
        this.shipperTotalCost = shipperTotalCost;
    }

    public String getGoodsRemark() {
        return goodsRemark;
    }

    public void setGoodsRemark(String goodsRemark) {
        this.goodsRemark = goodsRemark;
    }

    public String getDisplayConsignorCoordinate() {
        return displayConsignorCoordinate;
    }

    public void setDisplayConsignorCoordinate(String displayConsignorCoordinate) {
        this.displayConsignorCoordinate = displayConsignorCoordinate;
    }

    public String getDisplayConsigneeCoordinate() {
        return displayConsigneeCoordinate;
    }

    public void setDisplayConsigneeCoordinate(String displayConsigneeCoordinate) {
        this.displayConsigneeCoordinate = displayConsigneeCoordinate;
    }

    public Double getPayCost() {
        return payCost;
    }

    public void setPayCost(Double payCost) {
        this.payCost = payCost;
    }

    public Double getEmbarkAdditionalCost() {
        return embarkAdditionalCost;
    }

    public void setEmbarkAdditionalCost(Double embarkAdditionalCost) {
        this.embarkAdditionalCost = embarkAdditionalCost;
    }

    public Double getEmbarkInsuranceCost() {
        return embarkInsuranceCost;
    }

    public void setEmbarkInsuranceCost(Double embarkInsuranceCost) {
        this.embarkInsuranceCost = embarkInsuranceCost;
    }

    public Double getEmbarkInsuranceAmount() {
        return embarkInsuranceAmount;
    }

    public void setEmbarkInsuranceAmount(Double embarkInsuranceAmount) {
        this.embarkInsuranceAmount = embarkInsuranceAmount;
    }

    public Double getEmbarkAlreadyPayCost() {
        return embarkAlreadyPayCost;
    }

    public void setEmbarkAlreadyPayCost(Double embarkAlreadyPayCost) {
        this.embarkAlreadyPayCost = embarkAlreadyPayCost;
    }

    public Double getSurplusTransportCost() {
        return surplusTransportCost;
    }

    public void setSurplusTransportCost(Double surplusTransportCost) {
        this.surplusTransportCost = surplusTransportCost;
    }

    public Double getReleasePaymentRate() {
        return releasePaymentRate;
    }

    public String getNotRobReason() {
        return notRobReason;
    }

    public void setNotRobReason(String notRobReason) {
        this.notRobReason = notRobReason;
    }

    public String getMatchTruckTypeNames() {
        return matchTruckTypeNames;
    }

    public void setMatchTruckTypeNames(String matchTruckTypeNames) {
        this.matchTruckTypeNames = matchTruckTypeNames;
    }

    public void setReleasePaymentRate(Double releasePaymentRate) {
        this.releasePaymentRate = releasePaymentRate;
    }

    public Double getRobPaymentRate() {
        return robPaymentRate;
    }

    public void setRobPaymentRate(Double robPaymentRate) {
        this.robPaymentRate = robPaymentRate;
    }

    public Double getDeliverPaymentRate() {
        return deliverPaymentRate;
    }

    public void setDeliverPaymentRate(Double deliverPaymentRate) {
        this.deliverPaymentRate = deliverPaymentRate;
    }

    public Double getArrivalPaymentRate() {
        return arrivalPaymentRate;
    }

    public void setArrivalPaymentRate(Double arrivalPaymentRate) {
        this.arrivalPaymentRate = arrivalPaymentRate;
    }

    public Double getShipperFeeRate() {
        return shipperFeeRate;
    }

    public void setShipperFeeRate(Double shipperFeeRate) {
        this.shipperFeeRate = shipperFeeRate;
    }

    public Double getShipperTaxRate() {
        return shipperTaxRate;
    }

    public void setShipperTaxRate(Double shipperTaxRate) {
        this.shipperTaxRate = shipperTaxRate;
    }

    public Double getInsuranceRate() {
        return insuranceRate;
    }

    public void setInsuranceRate(Double insuranceRate) {
        this.insuranceRate = insuranceRate;
    }

    public String getGoodsOrderNo() {
        return goodsOrderNo;
    }

    public void setGoodsOrderNo(String goodsOrderNo) {
        this.goodsOrderNo = goodsOrderNo;
    }

    public Double getInsuredAmount() {
        return insuredAmount;
    }

    public void setInsuredAmount(Double insuredAmount) {
        this.insuredAmount = insuredAmount;
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public GoodsStatus getGoodsStatus() {
        return goodsStatus;
    }

    public void setGoodsStatus(GoodsStatus goodsStatus) {
        this.goodsStatus = goodsStatus;
    }

    public GoodsOrderType getGoodsOrderType() {
        return goodsOrderType;
    }

    public void setGoodsOrderType(GoodsOrderType goodsOrderType) {
        this.goodsOrderType = goodsOrderType;
    }

    public String getGoodsTypeName() {
        return goodsTypeName;
    }

    public void setGoodsTypeName(String goodsTypeName) {
        this.goodsTypeName = goodsTypeName;
    }

    public Integer getSupplementCount() {
        return supplementCount;
    }

    public void setSupplementCount(Integer supplementCount) {
        this.supplementCount = supplementCount;
    }

    public Integer getReleaseNumber() {
        return releaseNumber;
    }

    public void setReleaseNumber(Integer releaseNumber) {
        this.releaseNumber = releaseNumber;
    }

    public String getShipperOrganizeLogo() {
        return shipperOrganizeLogo;
    }

    public void setShipperOrganizeLogo(String shipperOrganizeLogo) {
        this.shipperOrganizeLogo = shipperOrganizeLogo;
    }

    public String getShipperOrganizeId() {
        return shipperOrganizeId;
    }

    public void setShipperOrganizeId(String shipperOrganizeId) {
        this.shipperOrganizeId = shipperOrganizeId;
    }

    public String getShipperOrganizeName() {
        return shipperOrganizeName;
    }

    public void setShipperOrganizeName(String shipperOrganizeName) {
        this.shipperOrganizeName = shipperOrganizeName;
    }

    public OrganType getShipperOrganizeType() {
        return shipperOrganizeType;
    }

    public void setShipperOrganizeType(OrganType shipperOrganizeType) {
        this.shipperOrganizeType = shipperOrganizeType;
    }

    public String getShipperMemberTypeName() {
        return shipperMemberTypeName;
    }

    public void setShipperMemberTypeName(String shipperMemberTypeName) {
        this.shipperMemberTypeName = shipperMemberTypeName;
    }

    public Double getShipperMonthlyRating() {
        return shipperMonthlyRating;
    }

    public void setShipperMonthlyRating(Double shipperMonthlyRating) {
        this.shipperMonthlyRating = shipperMonthlyRating;
    }

    public String getShipperGroupOrganizeId() {
        return shipperGroupOrganizeId;
    }

    public void setShipperGroupOrganizeId(String shipperGroupOrganizeId) {
        this.shipperGroupOrganizeId = shipperGroupOrganizeId;
    }

    public String getShipperGroupOrganizeName() {
        return shipperGroupOrganizeName;
    }

    public void setShipperGroupOrganizeName(String shipperGroupOrganizeName) {
        this.shipperGroupOrganizeName = shipperGroupOrganizeName;
    }

    public String getShipperAccountId() {
        return shipperAccountId;
    }

    public void setShipperAccountId(String shipperAccountId) {
        this.shipperAccountId = shipperAccountId;
    }

    public String getShipperAccountAvatar() {
        return shipperAccountAvatar;
    }

    public void setShipperAccountAvatar(String shipperAccountAvatar) {
        this.shipperAccountAvatar = shipperAccountAvatar;
    }

    public String getShipperAccountName() {
        return shipperAccountName;
    }

    public void setShipperAccountName(String shipperAccountName) {
        this.shipperAccountName = shipperAccountName;
    }

    public String getShipperAccountPhone() {
        return shipperAccountPhone;
    }

    public void setShipperAccountPhone(String shipperAccountPhone) {
        this.shipperAccountPhone = shipperAccountPhone;
    }

    public String getTruckTypeIds() {
        return truckTypeIds;
    }

    public void setTruckTypeIds(String truckTypeIds) {
        this.truckTypeIds = truckTypeIds;
    }

    public String getTruckTypeNames() {
        return truckTypeNames;
    }

    public void setTruckTypeNames(String truckTypeNames) {
        this.truckTypeNames = truckTypeNames;
    }

    public String getTransportTypeId() {
        return transportTypeId;
    }

    public void setTransportTypeId(String transportTypeId) {
        this.transportTypeId = transportTypeId;
    }

    public String getTransportTypeName() {
        return transportTypeName;
    }

    public void setTransportTypeName(String transportTypeName) {
        this.transportTypeName = transportTypeName;
    }

    public String getTransportTypeCode() {
        return transportTypeCode;
    }

    public void setTransportTypeCode(String transportTypeCode) {
        this.transportTypeCode = transportTypeCode;
    }

    public Double getKilometer() {
        return kilometer;
    }

    public void setKilometer(Double kilometer) {
        this.kilometer = kilometer;
    }

    public Integer getDuration() {
        return duration;
    }

    public void setDuration(Integer duration) {
        this.duration = duration;
    }

    public LimitRobScope getLimitRobScope() {
        return limitRobScope;
    }

    public void setLimitRobScope(LimitRobScope limitRobScope) {
        this.limitRobScope = limitRobScope;
    }

    public Double getShipperTotalMeasure() {
        return shipperTotalMeasure;
    }

    public void setShipperTotalMeasure(Double shipperTotalMeasure) {
        this.shipperTotalMeasure = shipperTotalMeasure;
    }

    public Double getEmbarkMeasure() {
        return embarkMeasure;
    }

    public void setEmbarkMeasure(Double embarkMeasure) {
        this.embarkMeasure = embarkMeasure;
    }

    public String getMeasureUnit() {
        return measureUnit;
    }

    public void setMeasureUnit(String measureUnit) {
        this.measureUnit = measureUnit;
    }

    public Double getTotalGrossWeight() {
        return totalGrossWeight;
    }

    public void setTotalGrossWeight(Double totalGrossWeight) {
        this.totalGrossWeight = totalGrossWeight;
    }

    public PriceMode getPriceMode() {
        return priceMode;
    }

    public void setPriceMode(PriceMode priceMode) {
        this.priceMode = priceMode;
    }

    public SettlementType getSettlementType() {
        return settlementType;
    }

    public void setSettlementType(SettlementType settlementType) {
        this.settlementType = settlementType;
    }

    public Double getShipperTransportCost() {
        return shipperTransportCost;
    }

    public void setShipperTransportCost(Double shipperTransportCost) {
        this.shipperTransportCost = shipperTransportCost;
    }

    public Double getShipperServiceCost() {
        return shipperServiceCost;
    }

    public void setShipperServiceCost(Double shipperServiceCost) {
        this.shipperServiceCost = shipperServiceCost;
    }

    public Double getShipperTaxCost() {
        return shipperTaxCost;
    }

    public void setShipperTaxCost(Double shipperTaxCost) {
        this.shipperTaxCost = shipperTaxCost;
    }

    public Double getShipperAdditionalCost() {
        return shipperAdditionalCost;
    }

    public void setShipperAdditionalCost(Double shipperAdditionalCost) {
        this.shipperAdditionalCost = shipperAdditionalCost;
    }

    public String getShipperAdditionalDetails() {
        return shipperAdditionalDetails;
    }

    public void setShipperAdditionalDetails(String shipperAdditionalDetails) {
        this.shipperAdditionalDetails = shipperAdditionalDetails;
    }

    public Double getInsuredCost() {
        return insuredCost;
    }

    public void setInsuredCost(Double insuredCost) {
        this.insuredCost = insuredCost;
    }

    public Date getReleaseTime() {
        return releaseTime;
    }

    public void setReleaseTime(Date releaseTime) {
        this.releaseTime = releaseTime;
    }

    public Date getReserveTime() {
        return reserveTime;
    }

    public void setReserveTime(Date reserveTime) {
        this.reserveTime = reserveTime;
    }

    public Date getEndTime() {
        return endTime;
    }

    public void setEndTime(Date endTime) {
        this.endTime = endTime;
    }

    public Date getLoadingTime() {
        return loadingTime;
    }

    public void setLoadingTime(Date loadingTime) {
        this.loadingTime = loadingTime;
    }

    public Date getScrapTime() {
        return scrapTime;
    }

    public void setScrapTime(Date scrapTime) {
        this.scrapTime = scrapTime;
    }

    public String getDisplayConsignorArea() {
        return displayConsignorArea;
    }

    public void setDisplayConsignorArea(String displayConsignorArea) {
        this.displayConsignorArea = displayConsignorArea;
    }

    public String getDisplayConsigneeArea() {
        return displayConsigneeArea;
    }

    public void setDisplayConsigneeArea(String displayConsigneeArea) {
        this.displayConsigneeArea = displayConsigneeArea;
    }

    public Boolean getFullLoad() {
        return fullLoad;
    }

    public void setFullLoad(Boolean fullLoad) {
        this.fullLoad = fullLoad;
    }

    public Boolean getMatching() {
        return matching;
    }

    public void setMatching(Boolean matching) {
        this.matching = matching;
    }

    public Boolean getIncludedTax() {
        return includedTax;
    }

    public void setIncludedTax(Boolean includedTax) {
        this.includedTax = includedTax;
    }

    public Boolean getNoBargain() {
        return noBargain;
    }

    public void setNoBargain(Boolean noBargain) {
        this.noBargain = noBargain;
    }

    public Boolean getAutoAudit() {
        return autoAudit;
    }

    public void setAutoAudit(Boolean autoAudit) {
        this.autoAudit = autoAudit;
    }

    public Boolean getStartFence() {
        return startFence;
    }

    public void setStartFence(Boolean startFence) {
        this.startFence = startFence;
    }

    public Boolean getNeedUploadShipping() {
        return needUploadShipping;
    }

    public void setNeedUploadShipping(Boolean needUploadShipping) {
        this.needUploadShipping = needUploadShipping;
    }

    public Boolean getAutoDelivery() {
        return autoDelivery;
    }

    public void setAutoDelivery(Boolean autoDelivery) {
        this.autoDelivery = autoDelivery;
    }

    public Boolean getNeedUploadReceipt() {
        return needUploadReceipt;
    }

    public void setNeedUploadReceipt(Boolean needUploadReceipt) {
        this.needUploadReceipt = needUploadReceipt;
    }

    public Boolean getSkipConfirmReceipt() {
        return skipConfirmReceipt;
    }

    public void setSkipConfirmReceipt(Boolean skipConfirmReceipt) {
        this.skipConfirmReceipt = skipConfirmReceipt;
    }

    public Boolean getHandLiquidation() {
        return handLiquidation;
    }

    public void setHandLiquidation(Boolean handLiquidation) {
        this.handLiquidation = handLiquidation;
    }

    public String getRobOrderId() {
        return robOrderId;
    }

    public void setRobOrderId(String robOrderId) {
        this.robOrderId = robOrderId;
    }

    public int getRobOrderNum() {
        return robOrderNum;
    }

    public void setRobOrderNum(int robOrderNum) {
        this.robOrderNum = robOrderNum;
    }

    public String getTargetPosition() {
        return targetPosition;
    }

    public void setTargetPosition(String targetPosition) {
        this.targetPosition = targetPosition;
    }

    public Double getTargetDistance() {
        return targetDistance;
    }

    public void setTargetDistance(Double targetDistance) {
        this.targetDistance = targetDistance;
    }

    public List<GoodsOrderNote> getGoodsOrderNoteList() {
        return goodsOrderNoteList;
    }

    public void setGoodsOrderNoteList(List<GoodsOrderNote> goodsOrderNoteList) {
        this.goodsOrderNoteList = goodsOrderNoteList;
    }

    public String getGoodsOrderDetailUrl() {
        return goodsOrderDetailUrl;
    }

    public void setGoodsOrderDetailUrl(String goodsOrderDetailUrl) {
        this.goodsOrderDetailUrl = goodsOrderDetailUrl;
    }

    public GoodsStatus[] getQueryStatuses() {
        return queryStatuses;
    }

    public void setQueryStatuses(GoodsStatus[] queryStatuses) {
        this.queryStatuses = queryStatuses;
    }

    public String getCooperateShipperIds() {
        return cooperateShipperIds;
    }

    public void setCooperateShipperIds(String cooperateShipperIds) {
        this.cooperateShipperIds = cooperateShipperIds;
    }

    public String getQueryTruckerPlatId() {
        return queryTruckerPlatId;
    }

    public void setQueryTruckerPlatId(String queryTruckerPlatId) {
        this.queryTruckerPlatId = queryTruckerPlatId;
    }

    public String getQueryTruckerZonePlatId() {
        return queryTruckerZonePlatId;
    }

    public void setQueryTruckerZonePlatId(String queryTruckerZonePlatId) {
        this.queryTruckerZonePlatId = queryTruckerZonePlatId;
    }

    public String getOptTip() {
        return optTip;
    }

    public void setOptTip(String optTip) {
        this.optTip = optTip;
    }

    public Boolean getOwner() {
        return owner;
    }

    public void setOwner(Boolean owner) {
        this.owner = owner;
    }

    public Boolean getShipperPay() {
        return shipperPay;
    }

    public void setShipperPay(Boolean shipperPay) {
        this.shipperPay = shipperPay;
    }

    public Boolean getShipperCanPay() {
        return shipperCanPay;
    }

    public void setShipperCanPay(Boolean shipperCanPay) {
        this.shipperCanPay = shipperCanPay;
    }

    public Boolean getShipperCanRelease() {
        return shipperCanRelease;
    }

    public void setShipperCanRelease(Boolean shipperCanRelease) {
        this.shipperCanRelease = shipperCanRelease;
    }

    public Boolean getShipperCanReserve() {
        return shipperCanReserve;
    }

    public void setShipperCanReserve(Boolean shipperCanReserve) {
        this.shipperCanReserve = shipperCanReserve;
    }

    public Boolean getShipperCanAssign() {
        return shipperCanAssign;
    }

    public void setShipperCanAssign(Boolean shipperCanAssign) {
        this.shipperCanAssign = shipperCanAssign;
    }

    public Boolean getShipperCanOffLine() {
        return shipperCanOffLine;
    }

    public void setShipperCanOffLine(Boolean shipperCanOffLine) {
        this.shipperCanOffLine = shipperCanOffLine;
    }

    public Boolean getShipperCanEdit() {
        return shipperCanEdit;
    }

    public void setShipperCanEdit(Boolean shipperCanEdit) {
        this.shipperCanEdit = shipperCanEdit;
    }

    public Boolean getShipperCanRobOrder() {
        return shipperCanRobOrder;
    }

    public void setShipperCanRobOrder(Boolean shipperCanRobOrder) {
        this.shipperCanRobOrder = shipperCanRobOrder;
    }

    public Boolean getShipperCanScrap() {
        return shipperCanScrap;
    }

    public void setShipperCanScrap(Boolean shipperCanScrap) {
        this.shipperCanScrap = shipperCanScrap;
    }

    public Boolean getTruckerCanRob() {
        return truckerCanRob;
    }

    public void setTruckerCanRob(Boolean truckerCanRob) {
        this.truckerCanRob = truckerCanRob;
    }

    public String getRobOrganizeId() {
        return robOrganizeId;
    }

    public void setRobOrganizeId(String robOrganizeId) {
        this.robOrganizeId = robOrganizeId;
    }
}
